Python

PythonPython([KK] 英語發音:/'pa?θɑn/, [DJ] 英語發音:/?paiθ?n/),是一種面向對象直譯式計算機程序設計語言,也是一種功能強大的通用型語言,已經具有近二十年的發展歷史,成熟且穩定。它包含了一組完善而且容易理解的標準庫,能夠輕松完成很多常見的任務。它的語法非常簡捷和清晰,與其它大多數計算機程序設計語言不一樣,它采用縮進來定義語句塊。

Python支持命令式編程面向對象程序設計函數式編程面向切面編程泛型編程多種編程范式。與SchemeRubyPerlTcl等動態語言一樣,Python具備垃圾回收功能,能夠自動管理內存使用。它經常被當作腳本語言用于處理系統管理任務和Web編程,然而它也非常適合完成各種高階任務。Python虛擬機本身幾乎可以在所有的操作系統中運行。使用一些諸如py2exePyPyPyInstaller之類的工具可以將Python源代碼轉換成可以脫離Python解釋器執行的程序。

Python的主要參考實現是CPython,它是一個由社區驅動的自由軟件。目前由Python軟件基金會管理。基于這種語言的相關技術正在飛速的發展,用戶數量急劇擴大,相關的資源非常多。

發展歷史

Python的創始人為吉多·范羅蘇姆(Guido van Rossum)。在1989年圣誕節期間的阿姆斯特丹,吉多為了打發圣誕節的無趣,決心開發一個新的腳本解釋程序,作為ABC語言的一種繼承。之所以選中Python作為程序的名字,是因為他是一個蒙提·派森的飛行馬戲團的愛好者。ABC是由吉多參加設計的一種教學語言。就吉多本人看來,ABC這種語言非常優美和強大,是專門為非專業程序員設計的。但是ABC語言并沒有成功,究其原因,吉多認為是非開放造成的。吉多決心在Python中避免這一錯誤,并取得了非常好的效果,完美結合了如CC++Java等其他語言。[1]

就這樣,Python在吉多手中誕生了。實際上,第一個實現是在Mac機上。可以說,Python是從ABC發展起來,主要受到了Modula-3(另一種相當優美且強大的語言,為小型團體所設計的)的影響。并且結合了Unix shell和C的習慣。

目前吉多·范羅蘇姆仍然是Python的主要開發者,決定整個Python語言的發展方向,Python社區經常稱呼他是仁慈的獨裁者

Python 2.0于2000年10月16日發布,主要是實現了完整的垃圾回收,并且支持Unicode。同時,整個開發過程更加透明,社區對開發進程的影響逐漸擴大。Python 3.0于2008年12月3日發布,此版不完全兼容之前的Python代碼。不過,很多新特性后來也被移植到舊的Python 2.6/2.7版本。

作為編程語言的設計哲學與定位

Python的設計哲學是“優雅”、“明確”、“簡單”。因此,Perl語言中“總有多種方法來做同一件事”的理念在Python開發者中通常是難以忍受的。Python開發者的哲學是“用一種方法,最好是只有一種方法來做一件事”。在設計Python語言時,如果面臨多種選擇,Python開發者一般會拒絕花哨的語法,而選擇明確的沒有或者很少有歧義的語法。由于這種設計觀念的差異,Python源代碼通常認為比Perl具備更好的可讀性,并且能夠支撐大規模的軟件開發。這些準則被稱為Python格言。在Python解釋器內運行import this可以獲得完整的列表。

Python開發人員盡量避開不成熟或者不重要的優化。一些針對非重要部位的加快運行速度的補丁通常不會被合并到Python內。所以很多人認為Python很慢。不過,根據二八定律,大多數程序對速度要求不高。在某些對運行速度要求很高的情況,Python程序員傾向于使用JIT技術,或者用使用C/C++語言改寫這部分程序。目前可用的JIT技術是Psyco

Python是完全面向對象的語言。函數、模塊、數字、字符串都是對象。并且完全支持繼承、重載、派生、多繼承,有益于增強代碼的復用性。Python支持重載運算符,因此Python也支持泛型設計。相對于Lisp這種傳統的函數式編程語言,Python對函數式編程只提供了有限的支持。有兩個標準庫(functools, itertools)提供了HaskellStandard ML中久經考驗的函數式編程工具。

雖然Python可能被粗略地分類為“腳本語言”(script language),但實際上一些大規模軟件開發計劃例如Zope、Mnet及BitTorrentGoogle也廣泛地使用它。Python的支持者較喜歡稱它為一種高階動態編程語言,原因是“腳本語言”泛指僅作簡單編程任務的語言,如shell script、JavaScript等只能處理簡單任務的編程語言,并不能與Python相提并論。

Python本身被設計為可擴展的。并非所有的特性和功能都集成到語言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用C語言C++Cython來編寫擴展模塊。Python解釋器本身也可以被集成到其它需要腳本語言的程序內。因此,很多人還把Python作為一種“膠水語言”(glue language)使用。使用Python將其他語言編寫的程序進行集成和封裝。Google內部的很多項目使用C++編寫性能要求極高的部分,然后用Python調用相應的模塊。[來源請求]很多游戲,如 EVE Online 使用Python來處理游戲中繁多的邏輯。

Python的應用場景

Python經常被用于Web開發。比如,通過mod_wsgi模塊,Apache可以運行用Python編寫的Web程序。Python定義了WSGI標準應用接口來協調Http服務器與基于Python的Web程序之間的通信。一些Web框架,如Django,TurboGears,web2py,Zope,flask等,可以讓程序員輕松地開發和管理復雜的Web程序。

在很多操作系統里,Python是標準的系統組件。大多數Linux發行版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在終端下直接運行Python。有一些Linux發行版的安裝器使用Python語言編寫,比如Ubuntu的Ubiquity安裝器,Red Hat Linux和Fedora的Anaconda安裝器。Gentoo Linux使用Python來編寫它的Portage包管理系統。Python標準庫包含了多個調用操作系統功能的庫。通過pywin32這個第三方軟件包,Python能夠訪問Windows的COM服務及其它Windows API。使用IronPython,Python程序能夠直接調用.Net Framework。一般說來,Python編寫的系統管理腳本在可讀性、性能、代碼重用度、擴展性幾方面都優于普通的shell腳本。

NumPy,SciPy,Matplotlib可以讓Python程序員編寫科學計算程序。PyQtPySidewxPythonPyGTK是Python快速開發桌面應用程序的利器。

Python對于各種網絡協議的支持很完善,因此經常被用于編寫服務器軟件、網絡爬蟲。第三方庫Twisted支持異步網絡編程和多數標準的網絡協議(包含客戶端和服務器),并且提供了多種工具,被廣泛用于編寫高性能的服務器軟件。

很多游戲使用C++編寫圖形顯示等高性能模塊,而使用Python或者Lua編寫游戲的邏輯、服務器。相較于Python,Lua的功能更簡單、體積更小;而Python則支持更多的特性和數據類型。

YouTube、Google、Yahoo!、NASA都在內部大量地使用Python。OLPC的操作系統Sugar項目的大多數軟件都是使用Python編寫。


集成開發環境

適用于Python的集成開發環境(IDE)軟件,除了標準二進制發布包所附的IDLE之外,還有許多其他選擇。其中有些軟件設計有語法著色、語法檢查、運行調試、自動補全、智能感知等便利功能。由于Python的跨平臺出身,這些軟件往往也具備各種操作系統的版本或一定的移植性。

專門為Python設計的IDE軟件:

  • Eric:基于PyQt的自由軟件,功能強大。支持自動補全、智能感知、自動語法檢查、工程管理、svn/cvs集成、自動單元測試等功能。調試功能與Visual Studio和Eclipse類似。目前同時有兩個版本。Eric4支持Python2.x,Eric5支持Python3.x。使用前需要先安裝相應的PyQt版本。
  • Ulipad:功能較全的免費軟件,依賴wxPython;作者是中國Python高手limodou
  • IDLE:Python“標準”IDE。一般隨Python而安裝,支持較少的編輯功能。調試功能也比較弱。
  • KomodoKomodo Edit:后者是前者的免費精簡版
  • PythonWin:包含在pywin32內的編輯器,僅適用于Windows
  • SPE(Stani's Python Editor):功能較多的免費軟件,依賴wxPython
  • WingIDE:可能是功能最全的IDE,但不是免費軟件

有相應插件的通用IDE/文本編輯器(使用難度往往較大):

  • eclipse + pydev插件
  • NetBeans + 插件
  • emacs + 插件
  • Vim + 插件
  • SlickEdit
  • TextMate
  • Python Tools for Visual Studio

另外,諸如EditPlusUltraEditPSPad等通用的程序員文本編輯器軟件也能編輯Python代碼,但是否夠得上集成開發環境的水平,尚有待評估。

著名應用

  • Pylons--Pylons web framework
  • Zope--應用服務器
  • Plone--內容管理系統
  • Django--鼓勵快速開發的web framework
  • TurboGears--另一個Web應用快速開發框架
  • Twisted--Python的網絡應用程序框架
  • Python Wikipedia Robot Framework--MediaWiki的機器人編程
  • MoinMoinWiki--Python寫成的wiki
  • flask--A Python Microframework

更多介紹:http://zh.wikipedia.org/wiki/Python